package org.bit.practice03;

import java.util.concurrent.TimeUnit;

public class Demo02 {
    public static void main(String[] args) {
        // 定义一个阻塞队列
        MyBlockingQueue queue = new MyBlockingQueue(100);

        // 创建生产着线程
        Thread producer = new Thread(() -> {
            // 循环不停的向队列中添加元素, 把队列占满
            int num = 0;
            while (true) {
                try {
                    // 添加元素
                    queue.put(num);
                    System.out.println("生产了元素：" + num);
                    num++;
                    // 休眠一会儿
                    TimeUnit.MILLISECONDS.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        // 启动生产者线程
        producer.start();

        // 定义一个消费者线程
        Thread consumer = new Thread(() -> {
            // 从队列中不停地取出元素
            while (true) {
                // 取元素
                try {
                    Integer value = queue.take();
                    System.out.println("消费了元素：" + value);
                    // 休眠一会儿
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        // 启动消费者线程
        consumer.start();
    }
}
